package com.codewsq;

import java.util.Arrays;

/*
 * 数组计算的 赋值和复制
 * */
public class 数组的赋值和复制 {

    public static void main(String[] args) {
        System.out.println("-------------------数组的赋值---------------------");
        // 数组的赋值
        String[] arr = new String[]{"3", "7", "2", "4", "5", "1"};
        // 赋值后改变新数组的数组值，然后输出arr，看起结果
        String[] arr1 = arr; // 赋值
        System.out.print("arr1：");
        Arrays.stream(arr1).forEach(s -> System.out.print(s + " "));
        arr1[0] = "嘿嘿";
        /* 遍历原始数组arr，发现arr数组的结果也被改变，
         *  结论： 数组赋值是把数组的引用地址给新的数组对象，两者公用同一个地址空间，所以新的数组对象修改数组时，原始数组的拿到的也是被改后的
         * */
        System.out.println();
        System.out.print("arr：");
        Arrays.stream(arr).forEach(s -> System.out.print(s + " "));

        System.out.println("\n-------------------数组的复制---------------------");
        // 数组的复制
        String[] strs = new String[]{"3", "7", "2", "4", "5", "1"};

        String[] strs1 = new String[strs.length];
        for (int i = 0; i < strs1.length; i++) {
            strs1[i] = strs[i];
        }
        System.out.print("strs1：");
        Arrays.stream(strs1).forEach(s -> System.out.print(s + " "));
        arr1[0] = "嘿嘿";

        /* 遍历原始数组arr，发现arr数组的结果没有被改变，
         *  结论： 数组复制就是把原始数组的值 复制一份 给新的数组对象
         * */
        System.out.println();
        System.out.print("strs：");
        Arrays.stream(strs).forEach(s -> System.out.print(s + " "));

    }

}
